package com.zj.HJ;

import java.text.DecimalFormat;
import java.util.Map;
import java.util.Scanner;

public class HJ107 {

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        double aDouble = scanner.nextDouble();
//        System.out.printf("%.1f",getRes2(aDouble));
        String format = new DecimalFormat("#.0").format(getRes2(aDouble));
        System.out.println(String.format("%.1f", getRes2(aDouble)));

    }


    public static double getRes(double num) {
        if (num == 0) {
            return 0;
        }
        boolean negtive = num > 0 ? false : true;
        int count = (int) (1000 * num);
        count = negtive ? -count : count;
        int min = Integer.MAX_VALUE;
        int index = -1;
        int predif = Integer.MAX_VALUE;
        for (int i = 1; i < count; i++) {
            int diff = i * i * i - count;
            diff = diff < 0 ? -diff : diff;
            if (diff > predif) {
                break;
            }
            if (diff < min) {
                min = diff;
                index = i;
            }
            predif = diff;
        }
        return negtive ? -(double) index / 10 : (double) index / 10;
    }


    public static double getRes2(double num) {
        double start = num / 2;
        while (Math.abs(start * start * start - num) > 0.1) {
            start = start * 2 / 3 + num / (3 * start * start);
        }
        return start;
    }

    public static double getRes3(double num) {
        double low = 0;
        double high = num;
        double start = (low + high) / 2;
        double diff = start * start * start - num;
        while (Math.abs(diff) > 0.01) {
            if (diff > 0) {
                high = (low + high) / 2;
            } else {
                low = (low + high) / 2;
            }
            start = (low + high) / 2;
            diff = start * start * start - num;

        }
        return start;
    }


}
